#ifndef SQL_H
#define SQL_H

#include <sqlite3.h>
#include <stdbool.h>

/* 传感器数据结构体 */
typedef struct {
    int id;                     // 记录ID
    char timestamp[20];         // 时间戳 (格式: "YYYY-MM-DD HH:MM:SS")
    double temperature;         // 温度值
    double humidity;            // 湿度值
    char sensor_id[32];         // 传感器ID
    bool uploaded;              // 是否已上传
} SensorData;

/* 数据库操作函数声明 */

/**
 * @brief 初始化数据库连接
 * @param db_path 数据库文件路径
 * @return 成功返回0，失败返回-1
 */
int sql_init_db(const char *db_path);

/**
 * @brief 关闭数据库连接
 * @return 总是返回0
 */
int sql_close_db(void);

/**
 * @brief 插入传感器数据
 * @param data 要插入的数据指针
 * @return 成功返回插入的rowid，失败返回-1
 */
int sql_insert_data(const SensorData *data);

/**
 * @brief 获取未上传的数据
 * @param results 存储查询结果的数组
 * @param max_count 数组最大容量
 * @return 成功返回查询到的记录数，失败返回-1
 */
int sql_get_unuploaded(SensorData *results, int max_count);

/**
 * @brief 标记数据为已上传
 * @param record_id 要标记的记录ID
 * @return 成功返回0，失败返回-1
 */
int sql_mark_uploaded(int record_id);

/**
 * @brief 删除旧数据
 * @param days_old 保留最近多少天的数据
 * @return 成功返回删除的记录数，失败返回-1
 */
int sql_delete_old_data(int days_old);

#endif /* SQL_H */